package lormi.meipin.dao;

import lormi.meipin.entity.Position;
import lormi.meipin.vo.PositionSearchVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.math.BigDecimal;
import java.util.List;

@Repository
public interface PositionMapper {
	
	/**
	 * 查询同一个地区同一个职位是否已经发布过
	 * @param merId
	 * @param cityId
	 * @param pcId
	 * @return
	 */
	int selectByMerIdCityIdPCId(@Param("merId") Integer merId, @Param("cityId") Integer cityId, @Param("pcId") Integer pcId);
	
	/**
	 * 查询同一个地区同一个职位是否已经发布过(用于修改)
	 * @param merId
	 * @param cityId
	 * @param pcId
	 * @return
	 */
	int selectByMerIdCityIdPCIdId(@Param("merId") Integer merId, @Param("cityId") Integer cityId, @Param("pcId") Integer pcId, @Param("Id") Integer Id);

	/**
	 * 查询商家是否发布了职位
	 * @param merid
	 * @return
	 */
    int selectCount(Integer merid);
	
    /**
     * 通过Id删除
     * @param id
     * @return
     */
    int deleteByPrimaryKey(Integer id);
    
    /**
     * 发布职位
     * @param record
     * @return
     */
    int insert(Position record);
    
    /**
     * 商家登陆时，更新他发布的职位时间
     * @param merid
     * @return
     */
    int updatePosition(Integer merid);

    /**
     * 通过Id查询
     * @param id
     * @return
     */
    Position selectByPrimaryKey(Integer id);

    /**
     * 商家查询已发布的职位列表
     * @param id
     * @return
     */
    List<Position> selectListPosition(Integer id);
    
    /**
     * 分享是查询正在招聘的职位
     * @param id
     * @return
     */
    List<Position> selectNotHidden(Integer id);

    /**
     * 更新职位
     * @param record
     * @return
     */
    int updateByPrimaryKey(Position record);
    
    /**
     * 个人收索职位列表查询
     * @param sql
     * @return
     */
    List<PositionSearchVo> selectSearchPosition(String sql);

    /**
     * 附近的职位信息
     * @param la
     * @param lo
     * @param start
     * @param page
     * @return
     */
    List<PositionSearchVo> selectNearByPosition(@Param("la") BigDecimal la, @Param("lo") BigDecimal lo,
                                                @Param("start") Integer start,
                                                @Param("page") Integer page);
    /**
     * 个人关注职位查询
     * @param memid
     * @param start
     * @param page
     * @return
     */
    List<PositionSearchVo> selectFocusList(@Param("memid") Integer memid,
                                           @Param("start") Integer start,
                                           @Param("page") Integer page);
    
    /**
     * 与对应期望工作相匹配的职位
     * @param positionclass
     * @param hostcity
     * @return
     */
    List<Position> matchingPosition(@Param("positionclass") Integer positionclass, @Param("hostcity") Integer hostcity);
    
}